1. Field of the Invention
The invention relates to determining network conditions. More particularly, the invention provides a system and a method for determining a transmission latency and a maximum transmission bandwidth for a network connection between a server computer and a client computer.
2. Description of the Related Technology
Today, more than ever, people transmit and receive data objects, including video, text, graphic and other data, over a network. People now expect and demand that the data objects be transmitted quickly and without errors. FIG. 1 illustrates a typical data object distribution system for distributing data objects 107.
The data object 107, located on the server computer 110, is made available for further distribution over a network 100, such as the Internet, to one or more client computers 112. The client computer 112 generally requests the data object 107, begins receiving portions of it, and possibly begins rendering the data object 107 for presentation to an end user. As part of the transmission process, the server computer 110 typically breaks the data object 107 into a sequence of packets by a process called xe2x80x9cpacketization.xe2x80x9d After packetization, the server computer 110 sends in succession each of the packets to the client computer 112.
During presentation, the server computer 110 can transmit the data object 107 at one of a variety of transmission rates. For example, the server computer 110 may initiate transmission of the data object to the client computer 112 at 20 kilobits per second (kbps). However, due to sources of interference such as, for example, noise or network congestion, or other problems, the client computer 112 may not receive the packets at a rate of 20 kbps. Thus, the actual available transmission capacity may not support a 20 kbps rate. Alternatively, transmission capacity may increase rather than decrease-even during the transmission of the data object 107. Without the ability to quickly detect changes in network conditions, the degree of change, or both, the transmission rate cannot be optimized, or even confidently improved.
Therefore, there is a need for a system that can detect network conditions. The system should be able to detect changes in latency in the transmission of packets, estimate the maximum transmission bandwidth for a network or both. The transmission latency and the maximum transmission bandwidth could advantageously be used by standard network systems, such as a transmission rate control device, to determine an optimal transmission rate for the data objects.
The system and method of the present invention have several features, no single one of which is solely responsible for its desirable attributes. Without limiting the scope of this invention as expressed by the claims that follow, its more prominent features will now be discussed briefly. After considering this discussion, and particularly after reading the section entitled xe2x80x9cDetailed Description of the Inventionxe2x80x9d one will understand how the features of this invention provide several advantages over traditional streaming systems.
One embodiment of the present invention is a method for determining a transmission bandwidth. The method comprises receiving a first data packet and a second data packet from a server computer over a communication link to the server computer, and determining a transmission bandwidth of said communication link, responsive to the receipt of the data packets. Another aspect of the embodiment is one additionally comprising accessing at least one identifier in a first data packet, the identifier indicating that the first data packet and the second data packet are being sent back-to-back relative to each other. Yet another aspect of the embodiment is one additionally comprising: (1) receiving the first data packet in the client computer; (2) identifying a first point in time upon the completion of the receipt of the first data packet; (3) receiving the second data packet; (4) identifying a second point in time upon the completion of the receipt of the second data packet; (5) determining the difference between the first point in time and the second point in time; (6) determining a quantity of data in the second data packet; and (7) determining the transmission bandwidth based on the determined difference and the determined quantity. Still another aspect of the embodiment determines the transmission bandwidth based on the determined difference and the determined quantity by applying the equation:
bandwidth=the determined quantity/(the determined difference+a correction factor);
wherein the correction factor is a heuristically obtained number to account for impreciseness of time obtained from a time provider. Another aspect of the embodiment is one comprising applying a compensation factor which compensates for the granularity of a system clock. Yet another aspect of the embodiment is one comprising reporting to a software module the determined transmission bandwidth. Still another aspect of the embodiment is one wherein the first data packet and the second data packet are sent from the server computer back-to-back relative to each other. A further aspect of that embodiment is comprising: (1) receiving one or more back-to-back packets subsequent to the receipt of the first data packet and the second data packet, each of the back-to-back packets including a first data packet and a second data packet; (2) identifying a first point in time for each of the back-to-back packets corresponding to the completion of the receipt of the first data packet in each of the back-to-back packets; (3) identifying a second point in time for each of the back-to-back packets corresponding to the completion of the receipt of the second data packet in each of the back-to-back packets; (4) determining the differences between the first point in time and the second point in time with respect to each of the back-to-back packets; (5) determining a quantity of data in each of the second data packets; and (6) determining the transmission bandwidth based on the determined differences and the determined quantities. Still another aspect of that embodiment is one wherein determining the transmission bandwidth based on the determined differences and the determined quantities includes the act of applying the following equation:
bandwidth=a total packet size/(a total packet time+a correction factor);
wherein the total packet size is equal to the combined sizes of each of the second data packets in a selected number of the back-to-back packets, the correction factor accounts for impreciseness of time obtained from a time provider, and the total packet time is the sum of the respective time intervals beginning upon receipt of the first data packet in each of the selected back-to-back packets and ending upon receipt of the associated second data packet. In another aspect, the embodiment further comprises applying a compensation factor which compensates for the granularity of a system clock. Still another aspect of the embodiment further comprises reporting to a software module the determined transmission bandwidth. In yet another aspect, the embodiment is one wherein the data packets collectively provide a streaming media presentation. A still a further aspect, the embodiment is one wherein the determined transmission bandwidth is an estimation of a maximum transmission bandwidth between the server computer and a receiving computer.
Another embodiment of the invention is a method for determining network conditions. The method comprises: (1) receiving one or more data packets from a server computer over a communication link to the server computer; and (2) determining a transmission latency, responsive to the receipt of the data packets. In another aspect, the embodiment additionally comprises applying the following equation:
latency=clock timexe2x88x92base timexe2x88x92timestamp;
wherein clock time is a time corresponding to the receipt by a receiving computer of the one or more data packets, base time is a reference time measuring the time it takes for the one or more data packets to be transmitted from the server computer to the receiving computer, and timestamp is a time corresponding to the beginning of the transmission of the one or more data packets. Another aspect of the embodiment further comprises accessing a timestamp in each of the one or more data packets, each timestamp approximately identifying a point in time when the server computer began transmitting the respective data packet. Still another aspect of the embodiment further comprises modifying each of the timestamps to account for any clock skew between a clock of the server computer and a clock of a receiving computer. A still further aspect of the embodiment further comprises reporting to a software module the transmission latency. Another aspect of the embodiment is one wherein the data packets collectively comprise a portion of a media presentation rendered to a user.
Another embodiment of the invention is a system for determining a transmission bandwidth. The system comprises: (1) a packet receiver which receives one or more data packets from a first computer over a communication link;, and (2) a transmission bandwidth detector which determines a transmission bandwidth associated with the communication link, responsive to the receipt of back-to-back data packets by the packet receiver. Another aspect of the embodiment is one wherein the transmission bandwidth detector applies the following equation:
bandwidth=a determined quantity/(a determined difference+a correction factor);
wherein each of the back-to-back packets includes a first data packet and a second data packet; and wherein the determined quantity represents the combined sizes of the second data packets in selected back-to-back data packets, the determined difference is the sum of the respective time intervals beginning approximately upon receipt of the first data packet in each of the selected back-to-back packets and ending approximately upon receipt of the associated second data packet, and the correction factor accounts for impreciseness of time obtained from a time provider. In another aspect of the embodiment, the system further comprises back-to-back packet identifiers received by the packet receiver, the back-to-back packet identifiers indicating which data packets are transmitted back-to-back relative to each other. Still another aspect of the embodiment is one wherein the transmission bandwidth detector estimates the amount of available transmission bandwidth between the server computer and the client computer. Yet another aspect of the embodiment is one wherein the transmission bandwidth detector reports the transmission bandwidth to the packet receiver. A further aspect of the embodiment is one wherein the transmission bandwidth detector estimates a maximum transmission bandwidth between the server computer and the client computer.
Still another embodiment of the present invention is a system for determining a latency in data communication. The system comprises: (1) a packet receiver which receives one or more data packets from a first computer; and (2) a latency detector which determines changes in latency in data communication from the first computer to a second computer, responsive to the receipt of the data packets by the packet receiver. Another aspect of the embodiment is one wherein the latency detector applies the following equation:
latency=clock timexe2x88x92base timexe2x88x92timestamp;
wherein clock time is a time corresponding to the receipt by the second computer of the one or more data packets, base time is a reference time measuring the time it takes for the one or more data packets to be transmitted from the first computer to the second computer, and timestamp is a time corresponding to the beginning of the transmission of the one or more data packets. A further aspect of the embodiment is one wherein the transmission latency detector reports the transmission latency to the packet receiver. A still further aspect of the embodiment is one wherein the data packets collectively provide a streaming media presentation.
Yet another embodiment of the present invention is a system for determining network conditions. The system comprises (1) means for receiving in a client computer a first data packet and a second data packet from a server computer; (2) means for identifying the first and second data packets as back-to-back packets; and (3) means for determining a total second packet size and a total second data packet receipt time to calculate a transmission bandwidth in a communication link from the server computer to the client computer, responsive to the receipt of the data packets by the client computer.
A still further embodiment of the present invention is a system for determining network conditions. The system comprises: (1) means for receiving in a client computer one or more data packets from a server computer; (2) means for identifying an approximate time of transmission of the one or more data packets; (3) means for identifying an approximate time of receipt of the one or more data packets; and (4) means for determining a base time from the times of transmission and receipt to derive latency in data communication between the server computer and the client computer.